home *** CD-ROM | disk | FTP | other *** search
/ Total Network Tools 2002 / NextStepPublishing-TotalNetworkTools2002-Win95.iso / Archive / Misc Servers / Zope.exe / MAX_SOCKETS.PY < prev    next >
Encoding:
Text File  |  2000-06-02  |  1.2 KB  |  66 lines

  1.  
  2. import socket
  3. import select
  4.  
  5. # several factors here we might want to test:
  6. # 1) max we can create
  7. # 2) max we can bind
  8. # 3) max we can listen on
  9. # 4) max we can connect
  10.  
  11. def max_server_sockets():
  12.     sl = []
  13.     while 1:
  14.         try:
  15.             s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
  16.             s.bind (('',0))
  17.             s.listen(5)
  18.             sl.append (s)
  19.         except:
  20.             break
  21.     num = len(sl)
  22.     for s in sl:
  23.         s.close()
  24.     del sl
  25.     return num
  26.  
  27. def max_client_sockets():
  28.     # make a server socket
  29.     server = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
  30.     server.bind (('', 9999))
  31.     server.listen (5)
  32.     sl = []
  33.     while 1:
  34.         try:
  35.             s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
  36.             s.connect (('', 9999))
  37.             conn, addr = server.accept()
  38.             sl.append ((s,conn))
  39.         except:
  40.             break
  41.     num = len(sl)
  42.     for s,c in sl:
  43.         s.close()
  44.         c.close()
  45.     del sl
  46.     return num
  47.  
  48. def max_select_sockets():
  49.     sl = []
  50.     while 1:
  51.         try:
  52.             num = len(sl)
  53.             for i in range(1 + len(sl) * 0.05):
  54.                 # Increase exponentially.
  55.                 s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
  56.                 s.bind (('',0))
  57.                 s.listen(5)
  58.                 sl.append (s)
  59.             select.select(sl,[],[],0)
  60.         except:
  61.             break
  62.     for s in sl:
  63.         s.close()
  64.     del sl
  65.     return num
  66.